package ai.zixing.mashibing.basic_class.class07;

// 折纸条
public class Code08_PaperFolding {

    public static void printAllFolds(int N) {
        // 第一次是凹的
        printProcess(1, N, true);
    }

    // 额外空间复杂度 O(N)
    // 递归过程，来到某一个节点
    // i 是节点的层数， N为一共的层数， down == true 凹
    public static void printProcess(int i, int N, boolean down) {
        if (i > N) {
            return;
        }
        // 每一次新的折痕上方都是凹的
        printProcess(i + 1, N, true);
        System.out.println(down ? "凹" : "凸");
        // 每一次新的折痕下方都是凸的
        printProcess(i + 1, N, false);
    }

    public static void main(String[] args) {
        int N = 3;
        printAllFolds(N);
    }
}
